home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Light ROM 1
/
LIGHT-ROM 1 (Amiga Library Services)(1994).iso
/
ffdisks
/
d970.lha
/
ADM
/
ARexx
/
PrintBirthday.adm
< prev
next >
Wrap
Text File
|
1993-06-23
|
5KB
|
167 lines
/* $VER: PrintBirthday.adm 1.0 (23.06.93)
Gibt Geburtstagsliste auf Drucker aus.
Geht davon aus, daß das Geburtsdatum im Format DD.MM.YY eingegeben
wurde.
Written by Jan Geißler. */
/* ----------------------------------------------------------------------
START
---------------------------------------------------------------------- */
OPTIONS RESULTS /* Rückgabewerte zulassen */
ADDRINMEM /* Anzahl Adressen holen */
numadr = RESULT
IF ~OPEN(datei,"RAM:.tmp1","W") THEN DO /* Ausgabedatei öffnen */
SAY "Kann Ausgabedatei nicht öffnen!"
EXIT
END
ACTIVATEFIRST /* Ersten Eintr. aktivieren */
/* ----------------------------------------------------------------------
AUSGABE
---------------------------------------------------------------------- */
DO FOR numAdr
GETADDRESS ADM /* Adresse -> Stemvar ADM */
geb = ADM.BIRTHDAY /* Geburtstag holen */
IF geb ~= "" THEN DO
p = POS(".",geb) /* Ersten Punkt suchen */
day = STRIP( SUBSTR( geb, 1, p-1)) /* -> Tag */
geb = DELSTR( geb, 1, p)
p = POS(".",geb) /* Zweiten Punkt suchen */
mon = STRIP( SUBSTR( geb, 1, p-1)) /* -> Monat */
yea = DELSTR( geb, 1, p) /* Rest ist Jahr */
/* In "name" wird der Name und Ort der Person abgelegt. Dies erscheint
auf der Liste später rechts vom Geburtsdatum */
IF ADM.firstname = "" THEN name = ADM.lastName
ELSE name = ADM.firstname ADM.lastName
IF ADM.city ~= "" THEN name = name || "," ADM.city
/* Falls Zahlen nur einstellig angegeben, werden sie hier erweitert */
IF LENGTH(yea) = 2 THEN yea = "19" || yea
IF LENGTH(mon) = 1 THEN mon = "0" || mon
IF LENGTH(day) = 1 THEN day = "0" || day
/* Nun Daten in einer temporären Datei so ablegen, daß nach alpha-
betischer Sortierung mit dem AmigaDos-Kommando "Sort" die Geburts-
daten in der richtigen Reihenfolge erscheinen.
Jede Zeile sieht so aus: Monat-Tag-Jahr-Name, Ort */
ok = WriteLn(datei, mon || "-" || day || "-" || yea || "-" || name)
END
ACTIVATENEXT /* Akt. naechsten Eintrag */
END
ok = WriteLn(datei,"99.99.99") /* Dateiende = 99.99.99 */
ok = CLOSE(datei)
cmd = "SORT RAM:.tmp1 TO RAM:.tmp2" /* Sort-Kommando aufrufen */
ADDRESS COMMAND cmd
IF ~OPEN(datei,"RAM:.tmp2","R") THEN DO /* Sortierte Datei öffnen */
SAY "Kann Eingabedatei nicht öffnen!"
EXIT
END
IF ~OPEN(out,"PRT:","W") THEN DO /* Drucker-Ausgabedatei */
SAY "Kann Drucker PRT: nicht öffnen!"
EXIT
END
ok = WriteLn(out,"Liste der Geburtstage") /* "Kopf" drucken */
ok = WriteLn(out,"================================================================")
ok = WriteLn(out,"")
DO UNTIL geb = "99.99.99"
geb = ReadLn(datei) /* Zeile einlesen */
IF geb ~= "99.99.99" THEN DO
p = POS("-",geb) /* Monat abtrennen */
mon = STRIP( SUBSTR( geb, 1, p-1))
geb = DELSTR( geb, 1, p)
p = POS("-",geb) /* Tag abtrennen */
day = STRIP( SUBSTR( geb, 1, p-1))
geb = DELSTR( geb, 1, p)
p = POS("-",geb)
yea = STRIP( SUBSTR( geb, 1, p-1)) /* Jahr abtrennen */
dat = SUBSTR( DATE(s), 1, 4) /* Akt. Jahr holen */
old = dat - yea /* Ergibt Alter der */
/* Person */
/* Nun herausfinden, ob der Geburtstag nach dem heutigen
Datum oder davor ist. Dementsprechend "wird", "wurde"
die Person so alt. */
ist = DATE('d')
war = DATE("d","1993" || mon || day,"s")
IF ist - war > 0 THEN gebw = "wurde"
IF ist - war = 0 THEN gebw = "heute"
IF ist - war < 0 THEN gebw = "wird"
/* Monat durch ausgeschriebenen Monatsnamen ersetzen */
nam = DELSTR( geb, 1, p)
IF mon = 1 THEN month = "Januar"
IF mon = 2 THEN month = "Februar"
IF mon = 3 THEN month = "März"
IF mon = 4 THEN month = "April"
IF mon = 5 THEN month = "Mai"
IF mon = 6 THEN month = "Juni"
IF mon = 7 THEN month = "Juli"
IF mon = 8 THEN month = "August"
IF mon = 9 THEN month = "September"
IF mon = 10 THEN month = "Oktober"
IF mon = 11 THEN month = "November"
IF mon = 12 THEN month = "Dezember"
/* Zeile erstellen & schreiben */
line = day || "." month yea
line = INSERT( "(" || gebw old || ")", line, 20)
line = INSERT( nam, line, 32)
ok = WriteLn(out,line)
END
END
ok = CLOSE(datei)
ok = CLOSE(out)
EXIT /* Programmende */